// ActionScript file
import classes.Professor;

import flash.events.Event;

import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.events.CloseEvent;
import mx.events.DataGridEvent;
import mx.events.FlexEvent;
import mx.managers.PopUpManager;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.mxml.RemoteObject;

import title_window.title_professor;

[Bindable]
public var prof_cadastrados:ArrayCollection;
//variavel pop-up do tipo professor
public var popUp:title_professor;
//objeto professor
public var professores:Professor;
//controla a tabela
[Bindable]
private var paginaAtual:Number=0;
//total de registroa mostrados na tabela
[Bindable]
private var TotalRegistros:Number = 0;

/*
FUNÇÃO CHAMADA LOGO APÓS A TELE SER REQUISITADA
-chama a funcao professores cadastrados
-adicona eventos aos botoes editar e excluir da tabela			
*/
private function inicializa(event:FlexEvent):void
{
	// Carrega o DataGrid
	listar_professores();
	dgProfessor.addEventListener("editar", editar);
	dgProfessor.addEventListener("excluir", excluir);
}
//chama método listar todos (Java)
public function listar_professores():void
{
	this.comunicaJava.listar_prof_paginacao(10*paginaAtual);
}

//função botão avançar
private function avancar():void
{
	paginaAtual += 1;
	listar_professores();
}
//função botão voltar
private function voltar():void
{
	paginaAtual -= 1;
	listar_professores();
}

/*
EVENTOS DOS BOTÕES NOVO, EDITAR E EXCLUIR
*/

//abre o title window (pop-up) para cadastrar novo curso
protected function novo():void
{
	popUp=title_professor(PopUpManager.createPopUp(this,title_professor,true));
	popUp.addEventListener("PopUpFechou",fechou);						
}
//chamada após fechar o pop-up de cadastro
private function fechou(evt:Event):void
{
	listar_professores();
}

//abre o title window (pop-up) para editar o curso
public function editar(e:Event):void
{
	popUp=title_professor(PopUpManager.createPopUp(this,title_professor,true));
	popUp.addEventListener("PopUpFechou",fechou);		
	popUp.prof=Professor (dgProfessor.selectedItem);	
}

//evento botão excluir da tabela
//verifica se deseja ou nao excluir
public function excluir(e:Event):void
{
	Alert.show("Excluir o professor '"+dgProfessor.selectedItem.nome+"' ?","Excluir Professor", Alert.YES | Alert.NO ,null,opcao);	
}
//verifica a resposta do usuario
private function opcao(event:CloseEvent):void{
	if(event.detail==Alert.YES){					
		this.comunicaJava.exclui_professor(dgProfessor.selectedItem);
	}					
}

//formata canpo da tabela
private function labelFunction_situacao(item:Object, col:DataGridColumn):String{
	if(item.ativo==true) return "Ativo";				  
	else  return "Inativo";
}

/*
FUNÇÕES CHAMADAS CASO OS MÉTODOS DE INSERIR, EDITAR, REMOVER E LISTAR OBTIVERAM SUCESSO 
*/
			
//emite mensagem e atualiza a tabela
//PREEMCHE O DATA GRID
public function listaPaginacao_result(event:ResultEvent):void
{			
	prof_cadastrados=event.result as ArrayCollection;			
	if(paginaAtual==0){
		BTVoltar.enabled=false;
	}else{
		BTVoltar.enabled=true;
	}
}

protected function remover_result(event:ResultEvent):void
{
	Alert.show("removido com sucesso");
	listar_professores();
}


/*
FUNÇÕES CHAMADAS CASO OS MÉTODOS DE INSERIR, EDITAR, REMOVER E LISTAR OBTIVEREM ALGUM ERRO
*/	

//emite mensagem
protected function remover_fault(event:FaultEvent):void
{
	Alert.show("Erro ao remover");
}
//emite mensagem
public function listaPaginacao_fault(event:FaultEvent):void
{
	Alert.show("erro ao carregar dados");
}


